/**
 * Copyright(c) 2013 Jade Techonologies, Ltd.
 *
 * History:
 *   2011-5-25 18:23:02 Created by sky
 */
package com.jade.bss.base.customer;

import java.util.Map;

import com.jade.bss.base.BssException;

/**
 * 客户和用户的映射关系管理接口。
 *
 * @author sky
 * @version 1.0 2011-5-25 18:23:02
 */
public interface UserMappingManager
{
    /**
     * 添加对应关系
     *
     * @param customerId 客户标识
     * @param appCode    应用代码
     * @param userId     应用中的用户标识
     * @throws BssException 异常
     */
    public void addMapping(long customerId, String appCode, String userId)
            throws BssException;

    /**
     * 删除某客户和某应用中的用户对应关系
     *
     * @param customerId 客户标识
     * @param appCode    应用代码
     * @throws BssException 异常
     */
    public void removeMapping(long customerId, String appCode)
            throws BssException;

    /**
     * 删除客户时，删除客户跟应用的对应关系
     *
     * @param customerId 客户标识
     * @throws BssException 异常
     */
    public void removeMappings(long customerId)
            throws BssException;

    /**
     * 获取某应用中的用户对应的客户标识
     *
     * @param appCode 应用代码
     * @param userId  用户标识
     * @return 客户标识
     */
    public long getCustomerId(String appCode, String userId);

    /**
     * 获取某客户，在某应用中的用户标识
     *
     * @param customerId 客户标识
     * @param appCode    应用代码
     * @return 用户标识
     */
    public String getUserId(long customerId, String appCode);

    /**
     * 获取某客户在各个应用中的用户标识
     *
     * @param customerId 客户标识
     * @return 客户对应的用户列表
     */
    public Map<String, String> getMappings(long customerId);
}
